package com.qs.rocketmq.bt.mq.delay;

import com.qs.rocketmq.bt.mq.MqConstant;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;

/**
 * 发送延时消息
 * 要点：就是在发消息时候，指定了延迟等级，不同的延迟等级对应不同延迟时长
 * @since 2022-07-11 17:57:04
 */
public class ScheduledMessageProducer {
    public static void main(String[] args) throws Exception {
        // 实例化一个生产者来产生延时消息
        DefaultMQProducer producer = new DefaultMQProducer(MqConstant.PRODUCER_GROUP_NAME);
        producer.setNamesrvAddr(MqConstant.MQ_NAME_SRV_ADDR);
        // 启动生产者
        producer.start();
        int totalMessagesToSend = 10;
        for (int i = 0; i < totalMessagesToSend; i++) {
            Message message = new Message(MqConstant.TEST_TOPIC, ("这个是延时消息内容 " + i).getBytes());
            // 设置延时等级3,这个消息将在10s之后发送(现在只支持固定的几个时间,详看delayTimeLevel)
            message.setDelayTimeLevel(3);
            // 发送消息
            producer.send(message);
            System.out.println("延时消息发送成功。。。");
        }

        // 关闭生产者
        producer.shutdown();
    }
}